home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / 9B.DSK / POLICE LINEUP.V1.83.bas < prev    next >
BASIC Source File  |  2014-09-09  |  8KB  |  96 lines

  1. 0  REM   POLICE LINEUP.V1.83  (C) COPYRIGHT 1983 ELIZABETH LEVIN
  2. 1  ONERR  GOTO 40000
  3. 100  HIMEM: 8192:V$ = "V1.83": HOME :S =  -16336:BLANK$ = "                                        "
  4. 110 DLAY = 40:FMAX = 24: DIM FACE%(5,FMAX),SS%(FMAX):FMAX = 12: DATA   32,74,255,173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,5,3,32,63,255,96: FOR X = 770 TO 796: READ Y: POKE X,Y: NEXT 
  5. 170 BAD%(1) = 127:BAD%(2) = 120:BAD%(3) = 85: DATA 191,191,161,127,95,120,127,143,161,170,  191,161,120,95: DIM DRTHY%(13): FOR X = 0 TO 13: READ DRTHY%(X): NEXT : DATA BYSTANDER,EYE WITNESS,STAR WITNESS,EAGLE-EYE: DIM LVL$(3): FOR X = 0 TO 3: READ LVL$(X): NEXT 
  6. 210 L$ = "HBCDFGWZLMNPRSTVKAE": DATA A,E,I,O,U,EE,EA,OA,OO,AI,IA,IE,OU,AU,OI,OY,      E,ER,ELL,ICK,ING,COCK,WOOD,ORTH,MAN,SON,STEIN,SKY,BY,LY,MORE,: DIM LS$(16,2): FOR Y = 1 TO 2: FOR X = 1 TO 16: READ LS$(X,Y): NEXT : NEXT : GOSUB 30000
  7. 300  REM 
  8. 310  INVERSE : GOSUB 2000: VTAB 23: HTAB 1: PRINT BLANK$;:SC = 0:FACES = 0:N = 6: IF INST  THEN  NORMAL : GOSUB 5700
  9. 400  REM 
  10. 410 FACES = FACES +1: FOR X = 1 TO N:SS%(X) = 1: NEXT :MISSED = 0:CHOICE = 0:THIS = 0: GOSUB 5000:THIS = 1: IF   NOT INST  THEN  GOSUB 3400
  11. 430  GOSUB 3000:THIS = 0: IF   NOT INST  THEN  VTAB 23: HTAB 1: CALL  -958: PRINT BLANK$;
  12. 440  IF MISSED  THEN  GOSUB 2000: GOTO 610
  13. 450 MCNT = 0: FOR PART = 1 TO 5: IF FACE%(PART,0) = FACE%(PART,CHOICE)  THEN MCNT = MCNT +1
  14. 460  NEXT : IF MCNT = 5  THEN 800
  15. 610  FOR Z = 1 TO 3: FOR X = 2 TO 3: POKE 768,BAD%(X): POKE 769,20: CALL 770: NEXT : NEXT : FOR P = 1 TO 5: GOSUB 1000: NEXT : FLASH : VTAB 21: HTAB 4: PRINT  LEFT$(BLANK$,13);: HTAB 5 +(6 - LEN(NAME$)/2): PRINT NAME$: HTAB 4: PRINT "   RELEASED  ": INVERSE : FOR Z = 1 TO 10: FOR X = 2 TO 3: POKE 768,BAD%(X): POKE 769,20: CALL 770: NEXT : NEXT : FOR X = 1 TO 1500: NEXT : NORMAL : IF SC = 0  THEN  GOTO 750
  16. 700  INVERSE : VTAB 21: HTAB 20: PRINT  LEFT$(BLANK$,20): HTAB 20: PRINT  LEFT$(BLANK$,20): IF SC <HSC  THEN 740
  17. 720 HSC = SC: VTAB 21: HTAB 29 - LEN( STR$(HSC)): FLASH : PRINT "BEST GAME $";HSC;: FOR Z = 1 TO 3: FOR Y = 0 TO 1: FOR X = 10 +Y TO 12 +Y: POKE 768,DRTHY%(X)/2: POKE 769,X *(Y +1): CALL 770: NEXT : NEXT : NEXT : GOSUB 30380
  18. 740  VTAB 21: HTAB 29 - LEN( STR$(HSC)): INVERSE : PRINT "BEST GAME $";HSC;
  19. 750  NORMAL : VTAB 24: HTAB 1: CALL  -868: NORMAL : VTAB 21: HTAB 3: PRINT " TO STOP PRESS ";: FLASH : PRINT "S";: NORMAL : PRINT " "
  20. 760  HTAB 3: PRINT  LEFT$(BLANK$,17): HTAB 3: PRINT "   TO PLAY AGAIN ": HTAB 3: PRINT "    PRESS ";: FLASH : PRINT "RETURN";: VTAB 1
  21. 765  GET ANS$:KEY =  ASC(ANS$) +128: GOSUB 9000: IF ANS$ < > CHR$(13)  AND ANS$ < >"S"  THEN 765
  22. 770  IF ANS$ =  CHR$(13)  THEN  VTAB 24: HTAB 1: CALL  -868: VTAB 21: INVERSE : GOTO 300
  23. 780  HOME : NORMAL : PRINT : PRINT D$;"RUN HELLO,D1"
  24. 800  REM 
  25. 810 L = L1 +1: FOR Z = 0 TO 4: IF Z = 1  THEN 840
  26. 820 X = (4 -Z) *66:Y = 0: GOSUB 1500: POKE 768,DRTHY%(Z): POKE 769,70: CALL 770
  27. 840  NEXT : VTAB 21: HTAB 1: CALL  -868: NORMAL :X$ = NAME$ +"   J A I L E D": HTAB 36 - LEN(X$): FOR X = 1 TO  LEN(X$): PRINT  MID$ (X$,X,1);:SS =  PEEK(S): POKE 768,DRTHY%(5): POKE 769,5: CALL 770: NEXT : INVERSE : FOR X = 6 TO 8: FOR Y = 1 TO 100: NEXT : POKE 768,DRTHY%(X): POKE 769,35: CALL 770: NEXT : GOSUB 4000: IF   NOT INST  THEN INST = 1: VTAB 24: HTAB 1: CALL  -868: NORMAL : GOSUB 5700
  28. 900  GOSUB 5500: GOTO 400
  29. 1000  REM 
  30. 1010 Z = 4 +P: IF   NOT THIS  THEN Z = P
  31. 1020  POKE 768,DRTHY%(Z): POKE 769,4: CALL 770:L = PART%(P,(FACE%(P,THIS))) +L1:X = 0:Y = 0: GOSUB 1500: RETURN 
  32. 1500  REM 
  33. 1530  POKE 36352,L - INT(L/256) *256: POKE 36353, INT(L/256): IF THIS >0  THEN X = X +140
  34. 1550  POKE 36354,X -(X >255) *256: POKE 36355,X >255: POKE 36356,Y: CALL 36361: RETURN 
  35. 2000  REM 
  36. 2030  HCOLOR= 3: HPLOT 0,0: CALL 62454: VTAB 21: HTAB 1: PRINT BLANK$;BLANK$: RETURN 
  37. 3000  REM 
  38. 3010 THIS = 1: IF   NOT INST  THEN  GOSUB 3400
  39. 3020  IF   NOT SS%(THIS)  THEN 3110
  40. 3025  GOSUB 2000: POKE  -16368,0: VTAB 21: HTAB 23: PRINT "SUSPECT #";THIS;" OF ";N;" ";: FOR P = 1 TO 5: GOSUB 1000: IF  PEEK( -16384) = 160  THEN P = 5
  41. 3040  NEXT : FOR X = 1 TO DLAY:KEY =  PEEK( -16384): GOSUB 9000: IF KEY <127  THEN 3100
  42. 3070  POKE  -16368,0: IF KEY < >141  AND KEY < >160  THEN 3100
  43. 3080 X = DLAY: IF KEY = 141  THEN CHOICE = THIS: GOTO 3100
  44. 3090 SS%(THIS) = 0: FOR Z = 30 TO 50  STEP 5: POKE 768,Z: POKE 769,3: CALL 770: NEXT : IF THIS = MTCH  THEN MISSED = 1
  45. 3100  NEXT : IF CHOICE  OR MISSED  THEN  RETURN 
  46. 3110 THIS = THIS +1: IF THIS >N  THEN THIS = 1
  47. 3120  GOTO 3020
  48. 3400  REM 
  49. 3450  VTAB 23: CALL  -958: NORMAL : VTAB 23: HTAB 4: PRINT "PRESS";: HTAB 26: PRINT "PRESS";: INVERSE : HTAB 10: PRINT "SPACE BAR";: HTAB 32: PRINT "RETURN": NORMAL : HTAB 10: PRINT "TO REJECT";: HTAB 27: PRINT "TO IDENTIFY";: INVERSE : VTAB 1: RETURN 
  50. 4000  REM 
  51. 4010  VTAB 22: HTAB 1: PRINT BLANK$;BLANK$;:Z = SC +N *(LVL +1): FOR X = SC TO Z: VTAB 23: HTAB 31 - LEN( STR$(X)): PRINT "REWARDS $";X: POKE 768,DRTHY%(9): POKE 769,4: CALL 770: NEXT :SC = Z: RETURN 
  52. 5000  REM 
  53. 5010  FOR THIS = 0 TO N: FOR PART = 1 TO 5:FACE%(PART,THIS) =  INT( RND(1) *MAX) +1: NEXT : NEXT :MTCH =  INT( RND(1) *N) +1: FOR PART = 1 TO 5:FACE%(PART,MTCH) = FACE%(PART,0): NEXT :NAME$ =  MID$ (L$,FACE%(1,0) +3,1) +"." + MID$ (L$,FACE%(2,0),1) +LS$((FACE%(3,0)),1) + MID$ (L$,FACE%(4,0) +1,1) +LS$((FACE%(5,0)),2)
  54. 5050  GOSUB 2000: VTAB 21: HTAB 1: PRINT BLANK$;: VTAB 21: HTAB 7: PRINT "WANTED": HTAB 5: PRINT "REWARD $";N *(LVL +1):THIS = 0: FOR P = 1 TO 5: GOSUB 1000: NEXT : FOR X = 1 TO 5: FOR Y = 1 TO 2: POKE 768,BAD%(Y): POKE 769,5: CALL 770: NEXT : POKE 768,BAD%(2): POKE 769,10: CALL 770: NEXT : GOSUB 5200: GOSUB 2000: VTAB 21: HTAB 1: PRINT BLANK$;: GOSUB 5300: RETURN 
  55. 5200  REM 
  56. 5205  ON LVL +1 GOTO 5210,5220,5230,5240
  57. 5210  FOR X = 1 TO 3000: NEXT : RETURN 
  58. 5220  FOR X = 1 TO 3000 -125 *N: NEXT : RETURN 
  59. 5230  FOR X = 1 TO 1500: NEXT : RETURN 
  60. 5240  FOR X = 1 TO 1500 -62.5 *N: NEXT : RETURN 
  61. 5300  REM 
  62. 5305  ON LVL +1 GOTO 5390,5390,5370,5360
  63. 5360 ZZ = FMAX -6: IF FACES <ZZ +1  THEN 5380
  64. 5370 ZZ = N +FACES
  65. 5380  FOR Z = 1 TO ZZ: POKE 768,255: POKE 769,5: CALL 770: FOR Y = 1 TO 100: NEXT : NEXT 
  66. 5390  RETURN 
  67. 5500  REM 
  68. 5520  IF N = FMAX  AND LVL <3  THEN LVL = LVL +1: POKE 799,LVL: GOSUB 5600:N = 6: GOTO 5540
  69. 5530  FOR X = 1 TO 2000: NEXT :N = N +1: IF N >FMAX  THEN N = FMAX
  70. 5540  RETURN 
  71. 5600  REM 
  72. 5605 FACES = 0: IF LVL = 3  THEN FMAX = 24
  73. 5610  FLASH : GOSUB 5700: FLASH : GOSUB 5720: FOR Z = 1 TO 3: FOR Y = 0 TO 1: FOR X = 10 +Y TO 12 +Y: POKE 768,DRTHY%(X)/2 ^(LVL -1): POKE 769,X *(Y +1): CALL 770: NEXT : NEXT : NEXT : NORMAL : GOSUB 5700: INVERSE : GOSUB 5720: VTAB 24: HTAB 28: NORMAL : PRINT "PRESS ";: FLASH : PRINT "RETURN";: VTAB 1
  74. 5670  GET ANS$:KEY =  ASC(ANS$) +128: GOSUB 9000: IF ANS$ < > CHR$(13)  THEN 5670
  75. 5680  VTAB 24: HTAB 26: CALL  -868: INVERSE : RETURN 
  76. 5700  REM 
  77. 5710  VTAB 24: HTAB 1: CALL  -868: PRINT " LEVEL ";LVL +1;": ";LVL$(LVL);" ";: INVERSE : VTAB 1: RETURN 
  78. 5720  VTAB 23: HTAB 1: PRINT  LEFT$(BLANK$,11 + LEN(LVL$(LVL)));: RETURN 
  79. 9000  REM 
  80. 9020  IF KEY = 147  THEN  POKE 770, SGN(64 - PEEK(770)) *64 + PEEK(770):S =   NOT  SGN(S) * -16336
  81. 9030  IF KEY < >155  THEN 9090
  82. 9040  POKE  -16368,0
  83. 9050 K =  PEEK( -16384): IF K < >155  THEN 9050
  84. 9060  POKE  -16368,0
  85. 9090  RETURN 
  86. 30000  REM 
  87. 30010 D$ =  CHR$(4): NORMAL :LVL =  PEEK(799): IF LVL <0  OR LVL >3  THEN LVL = 0
  88. 30020 L1 = 24576: IF  PEEK(797) = 43  THEN 30050
  89. 30030  PRINT D$;"BLOAD CONSTRUCT": PRINT D$;"BLOAD PICTURES.";V$;",A";L1: HGR : POKE 797,43
  90. 30050 FILE$ = "SHAPE LENGTHS." +V$: PRINT D$;"OPEN ";FILE$;",D1": PRINT D$;"READ ";FILE$: INPUT MAX: DIM PART%(5,MAX): FOR X = 1 TO MAX: FOR PART = 1 TO 5: INPUT PART%(PART,X)
  91. 30130  NEXT : NEXT : PRINT D$;"CLOSE":X$ = "READ": GOSUB 31000: INPUT PL%:: FOR X = 0 TO 3: INPUT OSC%(X): NEXT : PRINT D$;"CLOSE": PRINT :HSC = PL%: RETURN 
  92. 30380  IF HSC < = PL%  THEN 30400
  93. 30390 PL% = HSC: NORMAL :X$ = "WRITE": GOSUB 31000: PRINT PL%: FOR X = 0 TO 3: PRINT OSC%(X): NEXT : PRINT D$;"CLOSE": PRINT : INVERSE 
  94. 30400  RETURN 
  95. 31000  PRINT : PRINT D$;"OPEN SCORE,D1": PRINT D$;X$;"SCORE": RETURN 
  96. 40000  RESUME